#include "btform.h"
#include "ui_btform.h"
#include <QPropertyAnimation>

BtForm::BtForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::BtForm)
{
    ui->setupUi(this);
    // 首先先隐藏所有的动画效果，只在播放的时候显示动画
    // 这里的隐藏不是清除了，只是我们看不见，未来可以通过 show 方法进行显示
    ui->lineBox->hide();

    // 设置lineBox所有的line的动画效果
    // line1
    // 创建对象
    animation1 = new QPropertyAnimation(ui->line1, "geometry", this);
    // 设置动画的持续时间：单位：ms
    animation1->setDuration(1500);
    // 设置关键帧
    animation1->setKeyValueAt(0, QRect(1,30,3,0));
    animation1->setKeyValueAt(0.5, QRect(1,5,3,25));
    animation1->setKeyValueAt(1, QRect(1,30,3,0));
    // 设置动画的循环次数，-1代表死循环、
    animation1->setLoopCount(-1);
    // 开启动画
    animation1->start();

    // 其他的 line 设置:只需要修改横坐标，以及上升到最高点的时间、多加一个状态即可
    animation2 = new QPropertyAnimation(ui->line2, "geometry", this);
    animation2->setDuration(1500);
    animation2->setKeyValueAt(0, QRect(8,25,3,5));
    animation2->setKeyValueAt(0.4, QRect(8,5,3,25));
    animation2->setKeyValueAt(0.9, QRect(8,30,3,0));
    animation2->setKeyValueAt(1, QRect(8,25,3,5));
    animation2->setLoopCount(-1);
    animation2->start();

    animation3 = new QPropertyAnimation(ui->line3, "geometry", this);
    animation3->setDuration(1500);
    animation3->setKeyValueAt(0, QRect(15,20,3,10));
    animation3->setKeyValueAt(0.3, QRect(15,5,3,25));
    animation3->setKeyValueAt(0.8, QRect(15,30,3,0));
    animation3->setKeyValueAt(1, QRect(15,20,3,10));
    animation3->setLoopCount(-1);
    animation3->start();

    animation4 = new QPropertyAnimation(ui->line4, "geometry", this);
    animation4->setDuration(1500);
    animation4->setKeyValueAt(0, QRect(22,15,3,15));
    animation4->setKeyValueAt(0.2, QRect(22,5,3,25));
    animation4->setKeyValueAt(0.7, QRect(22,30,3,0));
    animation4->setKeyValueAt(1, QRect(22,15,3,15));
    animation4->setLoopCount(-1);
    animation4->start();
}

BtForm::~BtForm()
{
    delete ui;
}

// 在这里创建一个通用的方法
void BtForm::setIconAndText(const QString &pixmap, const QString &text, int pageId)
{
    // 设置图标
    ui->btIcon->setPixmap(QPixmap(pixmap));
    // 设置文字
    ui->btText->setText(text);
    // 设置这个界面对应的pageId
    this->pageId = pageId;
}

int BtForm::getPageId() const
{
    return pageId;
}

void BtForm::clearBackgroundColor()
{
    // 清除 BtStyle 的背景颜色
    ui->btStyle->setStyleSheet("#btStyle:hover{background-color: #d8d8d8;}");
}

void BtForm::showAnimation()
{
    // 显示动画
    ui->lineBox->show();
}

void BtForm::mousePressEvent(QMouseEvent *event)
{
    // 当鼠标按下时，需要修改背景颜色
    ui->btStyle->setStyleSheet("#btStyle { background-color: rgb(30,206,154); }");

    // 当鼠标按下时，需要修改对应的page
    // 发送改变 page 的信号给主界面，由主界面进行接收，进行切换界面
    emit btClick(pageId);
}
